#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;

// 3 2
// ab
// cd
// ef

// int Getgrade(char ch)
// {
//     if (ch == 'l')
//         return 4;
//     else if (ch == 'o')
//         return 3;
//     else if (ch == 'v')
//         return 2;
//     else if (ch == 'e')
//         return 1;
//     else
//         return 0;
// }
// // dp[i][j] = max(dp[i-1][j],dp[i][j-1])+Getgrade(ch);
// int main()
// {
//     int m = 0, n = 0, ret = 0;
//     cin >> m >> n;
//     vector<vector<char>> vv(m + 1, vector<char>(n + 1));
//     vector<vector<int>> dp(m + 1, vector<int>(n + 1));
//     for (int i = 1; i <= m; i++)
//     {
//         for (int j = 1; j <= n; j++)
//         {
//             cin >> vv[i][j];
//             dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + Getgrade(vv[i][j]);
//         }
//     }
//     cout << dp[m][n] << endl;
//     return 0;
// }
// class Solution
// {
// public:
//     int MLS(vector<int> &arr)
//     {
//         set<int> s;
//         for(auto e:arr)
//             s.insert(e);
//         int n = s.size();
//         sort(arr.begin(), arr.end());

//         vector<int> find;
//         for(auto e:s)
//             find.push_back(e);
//         int ret = 0,left=0, right=0;
//         while (right < n )
//         {
//             while (right <n-1 && find[right] + 1 == find[right+1])
//             {
//                 right++;
//             }
//             ret = max(ret, right - left + 1);
//             right++;
//             left = right;
//         }
//         cout << ret << endl;
//         return ret;
//     }
// };

// int main()
// {
//     int a, b;
//     cin >> a >> b;
//     int i = a > b ? a : b;
//     while (!(i % a == 0 && i % b == 0))
//     {
//         i++;
//     }
//     cout << i << endl;
//     return 0;
// }

// #include <iostream>
// #include <string>
// #include <algorithm>
// using namespace std;

// int main()
// {
//     string s, ret;
//     cin >> s;
//     reverse(s.begin(), s.end());
//     for (int i = 0; i < s.size(); i++)
//     {
//         if (i != 0 && i % 3 == 0)
//             ret += ",";
//         ret += s[i];
//     }
//     reverse(ret.begin(), ret.end());
//     cout << ret << endl;
//     return 0;
// }
// // 64 位输出请用 printf("%lld")

// #include <iostream>
// using namespace std;

// int main() {
//     int n;
//     cin >> n;
//     int dp[42] = {0};
//     dp[1] = 1;
//     dp[2] = 2;
//     for (int i = 3; i < 42; i++) {
//         dp[i] = dp[i - 1] + dp[i - 2];
//     }
//     cout << dp[n] << endl;
// }
// // 64 位输出请用 printf("%lld")

//[6,0,2,0,4]
// class Solution
// {
// public:
//     bool IsContinuous(vector<int> &nums)
//     {
//         sort(nums.begin(), nums.end());
//         int cnt = 0, i = 0;
//         while (nums[i] == 0)
//             cnt++, i++;
//         for (; i < 4; i++)
//         {
//             if (nums[i + 1] == nums[i])
//                 return false;
//             cnt -= nums[i + 1] - nums[i] - 1;
//         }
//         if (cnt < 0)
//             return false;
//         else
//             return true;
//     }
// };
